﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using GerTestes.Entity;
using GerTestes.Utilitarios;

namespace GerTestes.Cadastros
{
    public partial class CadastroModulo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregarGridProjetos();
            }
        }

        private void carregarGridProjetos()
        {
            DataTable dtProjetos = ControlClass.CNProjetos.getProjetos(TxtPesquisaGrid.Text);
            DataView dtProjetosAtivos = dtProjetos.AsDataView();
            dtProjetosAtivos.RowFilter = "ATIVO = 'S' ";
            gvwProjetos.DataSource = dtProjetosAtivos.ToTable();
            gvwProjetos.DataBind();
        }

        protected void gvwProjetos_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[3].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[3].Text.Trim()) == "S")
                    controle.ImageUrl = "~/assets/img/ativo.png";
                else
                    controle.ImageUrl = "~/assets/img/inativo.png";
                e.Row.Cells[3].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[3].Visible = false;
            }
            #endregion
        }

        protected void gvwProjetos_SelectedIndexChanged(object sender, EventArgs e)
        {
            pnlModulos.Visible = true;
            carregarModulos();
        }

        private void carregarModulos()
        {
            int pProjeto = Convert.ToInt32(gvwProjetos.SelectedDataKey["ID_PROJETO"].ToString());
            gvwModulos.DataSource = ControlClass.CNModulos.getModulos(pProjeto);
            gvwModulos.DataBind();
        }

        protected void gvwModulos_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                Modulo modulo = new Modulo();
                int index = int.Parse((String)e.CommandArgument);
                modulo.CodigoModulo = Convert.ToInt32(gvwModulos.DataKeys[index]["ID_MODULO"].ToString());
                modulo = ControlClass.CNModulos.getDadosModulo(modulo.CodigoModulo);
                if (e.CommandName == "Alterar")
                {
                    TxtDescricao.Text = modulo.Descricao.ToUpper();
                    ViewState["ID_MODULO"] = modulo.CodigoModulo;
                    ChkAtivo.Checked = modulo.Ativo == "S";
                    lblDescricaoPnlEdicao.Text = "Alteração Módulo";
                    pnlModulos.Visible = false;
                    pnlEdicao.Visible = true;
                    pnlProjetos.Enabled = false;
                    btnConfirmar.CommandName = "Alterar";
                }
                else if (e.CommandName == "Excluir")
                {
                    if (ControlClass.CNModulos.excluirModulo(modulo.CodigoModulo))
                    {
                        carregarModulos();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoExcluir, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.Erro, "") + "', function() {});", true);
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = false;
            pnlModulos.Visible = true;
            pnlProjetos.Enabled = true;
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                Modulo modulo = new Modulo();
                modulo.Descricao = TxtDescricao.Text.ToUpper();
                modulo.CodigoProjeto = Convert.ToInt32(gvwProjetos.SelectedDataKey["ID_PROJETO"].ToString());
                if (ChkAtivo.Checked)
                    modulo.Ativo = "S";
                else modulo.Ativo = "N";
                if (btnConfirmar.CommandName == "Incluir")
                {
                    if (ControlClass.CNModulos.incluirModulo(modulo))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoInserir, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
                else if (btnConfirmar.CommandName == "Alterar")
                {
                    modulo.CodigoModulo = Convert.ToInt32(ViewState["ID_MODULO"]);
                    if (ControlClass.CNModulos.alterarModulo(modulo))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoAlterar, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
                pnlEdicao.Visible = false;
                pnlModulos.Visible = true;
                pnlProjetos.Enabled = true;
                carregarModulos();
            }
            catch
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.Erro, "") + "', function() {});", true);
            }
        }

        protected void gvwModulos_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton button = (ImageButton)e.Row.FindControl("ImgExcluir");
                button.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("ImgAlterar");
                button2.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwModulos_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[3].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[4].Text.Trim()) == "S")
                    controle.ImageUrl = "~/assets/img/ativo.png";
                else
                    controle.ImageUrl = "~/assets/img/inativo.png";
                e.Row.Cells[4].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[4].Visible = false;
            }
            #endregion

            #region Configurando Alert de Confirmação
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Passando por todas as linhas
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
            #endregion
        }

        protected void btnIncluir_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = true;
            pnlModulos.Visible = false;
            pnlProjetos.Enabled = false;
            ThiagoSoftware.Upgrade.UtilForms.LimparCampos(pnlEdicao);
            btnConfirmar.CommandName = "Incluir";
            lblDescricaoPnlEdicao.Text = "Inclusão Módulo";
        }
    }
}